package com.heba.utils;

import android.graphics.Bitmap;
import android.widget.ImageView;

import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;

/**
 * UniversalImageLoadTool工具类
 *
 * @author shenghao
 */
public class UniversalImageLoadTool {

    private static ImageLoader imageLoader = ImageLoader.getInstance();

    public static ImageLoader getImageLoader() {
        return imageLoader;
    }

    public static boolean checkImageLoader() {
        return imageLoader.isInited();
    }

    /**
     * 加载图片
     *
     * @param uri
     * @param imageAware
     * @param default_pic
     */
    public static void disPlay(String uri, ImageView imageAware, int default_pic) {
        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .showImageOnLoading(default_pic)
                .showImageOnFail(default_pic)
                .showImageForEmptyUri(default_pic)
                .cacheOnDisk(true)
                .cacheInMemory(false)
                .imageScaleType(ImageScaleType.EXACTLY) //设置图片的缩放方式
                .displayer(new FadeInBitmapDisplayer(100))  //图片加载后渐入的动画时间
                .considerExifParams(true)
                .bitmapConfig(Bitmap.Config.RGB_565)
                .build();

        imageLoader.displayImage(uri, imageAware, options);
    }

    /**
     * 加载图片
     *
     * @param uri
     * @param imageAware
     */
    public static void disPlay(String uri, ImageView imageAware) {
        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .cacheOnDisk(true)
                .cacheInMemory(false)
                .imageScaleType(ImageScaleType.EXACTLY) //设置图片的缩放方式
                .displayer(new FadeInBitmapDisplayer(100))  //图片加载后渐入的动画时间
                .considerExifParams(true)
                .bitmapConfig(Bitmap.Config.RGB_565)
                .build();

        imageLoader.displayImage(uri, imageAware, options);
    }


    /**
     * 获取option
     *
     * @param default_pic 加载图片前显示的默认图片
     * @return option
     * <p>
     * 缩放类型ScaleType:
     * EXACTLY :图像将完全按比例缩小的目标大小
     * EXACTLY_STRETCHED:图片会缩放到目标大小完全
     * IN_SAMPLE_INT:图像将被二次采样的整数倍
     * IN_SAMPLE_POWER_OF_2:图片将降低2倍，直到下一减少步骤，使图像更小的目标大小
     * NONE:图片不会调整
     */
    public static DisplayImageOptions getImageOption(int default_pic) {
        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .showImageOnLoading(default_pic)
                .showImageOnFail(default_pic)
                .showImageForEmptyUri(default_pic)
                .cacheOnDisk(true)
                .cacheInMemory(false)
                .imageScaleType(ImageScaleType.EXACTLY) //设置图片的缩放方式
                .displayer(new FadeInBitmapDisplayer(100))  //图片加载后渐入的动画时间
                .considerExifParams(true)
                .bitmapConfig(Bitmap.Config.RGB_565)
                .build();
        return options;
    }

    /**
     * 获取option
     *
     * @return
     */
    public static DisplayImageOptions getImageOption() {
        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .cacheOnDisk(true)
                .cacheInMemory(false)
                .imageScaleType(ImageScaleType.EXACTLY) //设置图片的缩放方式
                .displayer(new FadeInBitmapDisplayer(100))  //图片加载后渐入的动画时间
                .considerExifParams(true)
                .bitmapConfig(Bitmap.Config.RGB_565)
                .build();
        return options;
    }

    /**
     * 该方法需在子线程处理
     *
     * @param url
     * @return
     */
    public static Bitmap getImageBitmap(String url) {
        Bitmap bitmap = imageLoader.loadImageSync(url);
        return bitmap;
    }

    /**
     * 清理图片缓存
     */
    public static void clear() {
        imageLoader.clearMemoryCache();
        imageLoader.clearDiskCache();
    }

    public static void resume() {
        imageLoader.resume();
    }

    /**
     * 暂停加载
     */
    public static void pause() {
        imageLoader.pause();
    }

    /**
     * 停止加载
     */
    public static void stop() {
        imageLoader.stop();
    }

    /**
     * 销毁加载
     */
    public static void destroy() {
        imageLoader.destroy();
    }
}
